home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Mousebroken 1.0.1 / source / Mousebroken source ƒ / cdev code / cdev.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  4.2 KB  |  153 lines  |  [TEXT/KAHL]

  1. /**********************************************************************\
  2.  
  3. File:        cdev.c
  4.  
  5. Purpose:    This module handles the actual cdev; check the switch-case
  6.             statement in main(...) for all the messages it does and
  7.             doesn't handle.
  8.             
  9.  
  10. Mousebroken -=- your computer isn't truly broken until it's mousebroken
  11. Copyright (C) 1993 Mark Pilgrim
  12.  
  13. This program is free software; you can redistribute it and/or modify
  14. it under the terms of the GNU General Public License as published by
  15. the Free Software Foundation; either version 2 of the License, or
  16. (at your option) any later version.
  17.  
  18. This program is distributed in the hope that it will be useful,
  19. but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21. GNU General Public License for more details.
  22.  
  23. You should have received a copy of the GNU General Public License
  24. along with this program in a file named "GNU General Public License".
  25. If not, write to the Free Software Foundation, 675 Mass Ave,
  26. Cambridge, MA 02139, USA.
  27.  
  28. \**********************************************************************/
  29.  
  30. #include "cdev globals.h"
  31. #include "cdev prefs.h"
  32. #include "cdev.h"
  33. #include "cdev meat.h"
  34. #include "cdev gui.h"
  35. #include "cdev error.h"
  36. #include "Retrace.h"
  37.  
  38. pascal long main(int message, int item, int numItems, int CPanelID,
  39.     EventRecord *theEvent, PrefHandle cdevStorage, DialogPtr theDlog)
  40. {
  41.     int                resultCode;
  42.     
  43.     if (message==macDev)
  44.         return 1L;                                            /* we work on every machine */
  45.     else if (cdevStorage!=0L)
  46.     {
  47.         switch (message) 
  48.         {
  49.             case initDev:                                    /* initialize cdev */
  50.                 cdevStorage=NewHandle(sizeof(PrefStruct));    /* create private storage */
  51.                 if (cdevStorage==0L)
  52.                     return 0L;
  53.  
  54.                 resultCode=PreferencesInit(cdevStorage);
  55.                 if ((resultCode!=prefs_allsWell) && (resultCode!=prefs_virginErr))
  56.                 {
  57.                     HandleError(resultCode);
  58.                     return cdevGenErr;
  59.                 }
  60.                 
  61.                 RemoveTheMouseVBL(cdevStorage);
  62.                 
  63.                 resultCode=GetModuleInfo(cdevStorage);
  64.                 if (resultCode!=allsWell)
  65.                 {
  66.                     HandleError(resultCode);
  67.                     return cdevGenErr;
  68.                 }
  69.                 
  70.                 resultCode=OpenTheModule(cdevStorage);
  71.                 if (resultCode!=allsWell)
  72.                 {
  73.                     HandleError(resultCode);
  74.                     return cdevGenErr;
  75.                 }
  76.                 
  77.                 CheckOnOff(theDlog, numItems, (**cdevStorage).isOn);
  78.                 CheckShowIcon(theDlog, numItems, (**cdevStorage).showIcon);
  79.                 IconSetup(theDlog, numItems);
  80.                 SetModuleSpecifics(theDlog, numItems, cdevStorage);
  81.                 break;
  82.             case hitDev:                                    /* handle hit on item */
  83.                 switch (item-numItems)
  84.                 {
  85.                     case kButtonLeft:
  86.                     case kButtonRight:
  87.                         CloseTheModule(cdevStorage);
  88.                         resultCode=GetModuleInfoFromIndex(cdevStorage,
  89.                             ((item-numItems)==kButtonLeft) ? -1 : 1);
  90.                         if (resultCode!=allsWell)
  91.                         {
  92.                             HandleError(resultCode);
  93.                             return cdevGenErr;
  94.                         }
  95.                         
  96.                         resultCode=OpenTheModule(cdevStorage);
  97.                         if (resultCode!=allsWell)
  98.                         {
  99.                             HandleError(resultCode);
  100.                             return cdevGenErr;
  101.                         }
  102.                         
  103.                         SetModuleSpecifics(theDlog, numItems, cdevStorage);
  104.                         break;
  105.                     case kButtonOn:
  106.                     case kTitleOn:
  107.                         (**cdevStorage).isOn=0xFF;
  108.                         CheckOnOff(theDlog, numItems, TRUE);
  109.                         break;
  110.                     case kButtonOff:
  111.                     case kTitleOff:
  112.                         (**cdevStorage).isOn=0x00;
  113.                         CheckOnOff(theDlog, numItems, FALSE);
  114.                         break;
  115.                     case kButtonShowIcon:
  116.                     case kTitleShowIcon:
  117.                         (**cdevStorage).showIcon=!((**cdevStorage).showIcon);
  118.                         CheckShowIcon(theDlog, numItems, (**cdevStorage).showIcon);
  119.                         break;
  120.                 }
  121.                 break;
  122.             case closeDev:                                    /* clean up and dispose */
  123.                 if (((**cdevStorage).isOn) && ((**cdevStorage).moduleIndex!=0))
  124.                 {
  125.                     resultCode=InstallTheMouseVBL(cdevStorage);
  126.                     if (resultCode!=allsWell)
  127.                     {
  128.                         HandleError(resultCode);
  129.                         return cdevGenErr;
  130.                     }
  131.                 }
  132.                 CloseTheModule(cdevStorage);
  133.                 SaveThePrefs(cdevStorage);
  134.                 break;
  135.             case nulDev:
  136.             case updateDev:                                    /* handle any update drawing */
  137.             case activDev:                                    /* activate any needed items */
  138.             case deactivDev:                                /* deactivate any needed items */
  139.             case keyEvtDev:                                    /* respond to keydown */
  140.             case undoDev:
  141.             case cutDev:
  142.             case copyDev:
  143.             case pasteDev:
  144.             case clearDev:
  145.                 break;
  146.         }
  147.  
  148.         return (long)cdevStorage;
  149.     }
  150.     
  151.     return 0L;
  152. }
  153.